import Mock from 'mockjs'
const Random = Mock.Random
let userList = []
let scoreInquieList = []
for (let i = 0; i < 30; i++) {
  userList[i] = Mock.mock({
    'date': '@date("yyyy-MM-dd")',
    'name': '@cname',
    'address': function () {
      return Random.city() + Random.county().slice(0, 2) + '路' + Random.int(0, 260) + '号'
    },
    'tag|1': ['家', '公司', '学校']
  })
}

for (let i = 0; i < 30; i++) {
  scoreInquieList[i] = Mock.mock({
    'id': '@increment',
    'name': '@cname',
    'chinese|0-150': 50,
    'math|0-150': 50,
    'english|0-150': 50,
    'physics|0-100': 50,
    'chemistry|0-100': 50,
    'biological|0-100': 50,
    'c|0-100': 50,
    'java|0-100': 50,
    'javascript|0-100': 50
  })
}
export function userInfo () {
  return {
    url: '/mymenu/user-info',
    type: 'get',
    data: userList
  }
}

export function scoreInquire () {
  return {
    url: '/mymenu/score-inquire',
    type: 'get',
    data: scoreInquieList
  }
}

// {
//   label: '成绩管理',
//   children: [{
//     label: '一中',
//     children: [{
//       label: '1班'
//     }]
//   }, {
//     label: '二中',
//     children: [{
//       label: '3班'
//     }]
//   }]
// }
let scoreSysChildren = []
// let allClassScore = {}  // 所有班级的成绩
// ======================= 学校 ============================
let arr = ['一', '二', '三', '四']
for (let j = 0; j < 3; j++) {  // 成绩查询下面的菜单
  let school = Random.city() + '第' + arr[Random.int(0, 3)] + '中学'
  scoreSysChildren.push({label: school, children: []})
  for (let i = 0; i < 4; i++) {  // 班级 =============>
    let classId = Random.id()
    // allClassScore[classId] = []
    scoreSysChildren[j].children.push(Mock.mock({
      'url': '/mymenu/score/' + classId,
      'label': '高' + arr[Random.int(0, 2)] + Random.cword('一二三四五六七八九') + '班'
    }))
    mockIntercept(getScore(classId))
  }
}

// for (let className in allClassScore) {
//   for (let i = 0; i < 30; i++) { // 给一个具体班级的成绩
//     allClassScore[className].push(Mock.mock({ // 每一个人的成绩
//       'id': '@increment',
//       'name': '@cname',
//       'chinese|0-150': 50,
//       'math|0-150': 50,
//       'english|0-150': 50,
//       'physics|0-100': 50,
//       'chemistry|0-100': 50,
//       'biological|0-100': 50,
//       'c|0-100': 50,
//       'java|0-100': 50,
//       'javascript|0-100': 50
//     }))
//   }
// }

// 得到所有的班级名
export function getScoreSysChildren () {
  return {
    url: '/mymenu/score-sys-child',
    type: 'get',
    data: scoreSysChildren
  }
}

function getScore (id) {
  return {
    url: '/mymenu/score/' + id,
    type: 'get',
    data: ''
  }
}

/* 有参数的改进之后的的请求, 可以不用先保存数据
但是这样有一个问题就是每点击一个就会重新请求，
这样次的数据都不一样
====================================== */
function productionScore () {
  let arr = []
  let len = Random.int(40, 70)
  for (let i = 0; i < len; i++) {
    arr.push((Mock.mock({ // 每一个人的成绩
      'id': '@increment',
      'name': '@cname',
      'chinese|0-150': 50,
      'math|0-150': 50,
      'english|0-150': 50,
      'physics|0-100': 50,
      'chemistry|0-100': 50,
      'biological|0-100': 50,
      'c|0-100': 50,
      'java|0-100': 50,
      'javascript|0-100': 50
    })))
  }
  return arr
}

/**
 * 拦截请求 创建mock模拟数据
 * @param {*} res 拦截响应数据
 */
function mockIntercept (res) {
  Mock.mock(new RegExp(res.url), res.type, (opts) => {
    opts['data'] = opts.body ? JSON.parse(opts.body) : null
    res.data = productionScore()
    delete opts.body
    console.log('\n')
    console.log('%MyMock拦截, 请求: ', 'color:blue', opts)
    console.log('%MyMock响应, 响应: ', 'color:blue', res.data)
    return res.data
  })
}
